package zip;

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class TestZip2 {

	static String bb = "写入文件输出流中,并将输出流定位于entry起始处。" +
			"置用于后续条目的默认压缩方法始处。置用于后续条目的默认压缩方" +
			"法始处。置用于后续条目的默认压缩方法始处。置用于后续条目的默认" +
			"压缩方法始处。置用于后续条目的默认压缩方法始处。置用于后续条目" +
			"的默认压缩方法始处。置用于后续条目的默认压缩方法始处。置用于后" +
			"续条目的默认压缩方法始啊斯蒂芬阿斯蒂芬空间去哦我撇utolkljl处。" +
			"置用于后续条目的默认压缩方法三大发送到家了哦iuownerpoiz始处。置" +
			"用于后续条目的默认压缩方法始处。置用于后续条目的默认压缩方法始" +
			"处。置用于后续条目的默认压缩方法。只要没有为单个 ZIP 文件条目指" +
			"定压缩方法，并且其初始设置asdf拉阔i额你阿拉丁筋骨皮玻璃看奇闻让" +
			"你求组,那个欠我屁un只需奥ius的qw465498e4rt856124346543213fcs2" +
			"1bhs6d5f4g656as5d7t98qw321asjdfpok两节课美女材料科技哦i拉克丝" +
			"大家发色roi了joiuwetnl自苦寒来看待化工i额容器er为 DEFLATED 时，" +
			"就使用此默 static final int ENDSIZ另请参见： 常量字段----------" +
			"-------------------------------------------------------------" +
			"--------ENDOFFpublic static final int ENDOFF另请参见：常量字段" +
			"值------------------------------------------------------------" +
			"--------------------ENDCOMpublic static final int ENDCOM另请参见" +
			"：常量字段值构造方法详细信息 ZipOutputStreampublic ZipOutputStream" +
			"(OutputStream out)创建新的 ZIP 输出流。 参数：out - 实际输出流方法详" +
			"细信息 setCommentpublic void setComment(String comment)设置 ZIP 文" +
			"件注释。 参数：comment - 注释字符串 抛出： IllegalArgumentException -" +
			" 如果指定的 ZIP 文件注释的长度超过 0xFFFF 字节-----------------------" +
			"---------------------------------------------------------setMethod" +
			"public void setMethod(int method)设置用于后续条目的默认压缩方法。只要" +
			"没有为单个 ZIP 文件条目指定压缩方法，并且其初始设置为 DEFLATED 时，就使" +
			"用此默认值。 参数：method - 默认压缩方法 抛出： IllegalArgumentExceptio" +
			"n - 如果指定的压缩方法无效--------------------------------------------" +
			"------------------------------------setLevelpublic void setLevel(int" +
			" level)为后续的 DEFLATED 条目设置压缩级别。默认设置是 DEFAULT_COMPRESSIO" +
			"N。 参数：level - 压缩级别 (0-9) 抛出： IllegalArgumentException - 如果" +
			"压缩级别无效-------------------------------------------------------" +
			"-------------------------putNextEntrypublic void putNextEntry(ZipEn" +
			"try e)                  throws IOException开始写入新的 ZIP 文件条目并将" +
			"流定位到条目数据的开始处。如果仍处于活动状态，则关闭当前条目。如果没有为" +
			"条目指定压缩方法，则使用默认的压缩方法；如果没有为条目设置修改时间，则使用" +
			"当前时间。 参数：e - 要写入的 ZIP 条目 抛出： ZipException - 如果发生 ZIP 格" +
			"式错误 IOException - 如果发生 I/O 错误----------------------------------" +
			"----------------------------------------------closeEntrypublic void clo" +
			"seEntry()                throws IOException关闭当前 ZIP 条目并定位流以写入" +
			"下一个条目。 抛出： ZipException - 如果发生 ZIP 格式错误 IOException - 如果" +
			"发生 I/O 错误---------------------------------------------------------" +
			"-----------------------writepublic void write(byte[] b,                " +
			"  int off,                  int len)           throws IOException将字节数" +
			"组写入当前 ZIP 条目数据。在写入所有字节之前，此方法将阻塞。 覆盖：类 DeflaterO" +
			"utputStream 中的 write参数：b - 要写入的数据off - 数据中的初始偏移量len - 要" +
			"写入的字节数 抛出： ZipException - 如果发生 ZIP 文件错误 IOException - 如果发" +
			"生 I/O 错误另请参见：FilterOutputStream.write(int)认值";

	public static void main(String[] args) throws Exception {



		// 用文件输出流构建ZIP压缩输出流
		ZipOutputStream zipos = new ZipOutputStream(new FileOutputStream(new File("F:/系统文件夹/桌面/tet.txt")));

		//设置压缩方法
		zipos.setMethod(ZipOutputStream.DEFLATED); 

		zipos.putNextEntry(new ZipEntry("zip"));

		// 生成一个ZIP entry,写入文件输出流中,并将输出流定位于entry起始处。
		DataOutputStream os = new DataOutputStream(zipos);

		os.writeUTF(bb);
		

		System.out.println("原字符串: 	" + bb);
		

		// 用文件输入流构建ZIP压缩输入流
		ZipInputStream zipis = new ZipInputStream(new FileInputStream(new File("F:/系统文件夹/桌面/tet.txt")));

		DataInputStream dis = new DataInputStream(zipis);
		
		// 用ZIP输入流构建DataInputStream
		dis.readUTF();// 读取文件内容
		
	}
}
